import pandas as pd
pd.set_option('display.unicode.east_asian_width', True)
df = pd.DataFrame({'班级':['一班','一班','一班','二班','二班','二班'],
                   '姓名':['刘武','王振','赵胜','赵霞','方芳','齐婷'],
                   '语文': [85, 102, 96, 126, 130, 135],
                   '数学': [100, 90, 124, 123, 140, 109],
                   '英语': [83, 110, 123, 103, 135, 90]})
print('原始数据：\n', df)
group1 = df.groupby('班级')
print('以key列按行分组：')
for i in group1:						#循环输出分组结果
    print(i)
print('每个班每个科目的平均成绩：\n', group1.agg('mean',numeric_only=True))
group2 = df.groupby({'语文': '总成绩', '数学': '总成绩', '英语': '总成绩'}, axis=1)
print('以列标签按列分组：')
for i in group2:						#循环输出分组结果
    print(i)
df['总成绩'] = group2.agg('sum',numeric_only=True)	#按行求和聚合计算每个学生的总成绩
print('添加总成绩后的数据：\n', df)


#按行求均值聚合计算每个学生的平均成绩
df['平均成绩'] = group2.agg('mean',numeric_only=True)
print('添加平均成绩后的数据：\n', df)

bins_value = [0, 90, 110, 135, 150]
labels_value = ['不合格', '中', '良', '优']
df['等级'] = pd.cut(df['平均成绩'], bins=bins_value, right=False, include_lowest=True, labels=labels_value)
print('根据平均成绩判断等级后的数据：\n', df)
